package com.mall.common.trace;

import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.apm.toolkit.trace.ActiveSpan;
import org.apache.skywalking.apm.toolkit.trace.TraceContext;

/**
 * 链路追踪工具类
 */
@Slf4j
public class TraceUtil {

    /**
     * 获取链路追踪ID
     */
    public static String getTraceId() {
        try {
            return TraceContext.traceId();
        } catch (Exception e) {
            log.warn("获取traceId异常", e);
            return "";
        }
    }

    /**
     * 设置当前Span的操作名称
     */
    public static void setOperationName(String operationName) {
        try {
            ActiveSpan.setOperationName(operationName);
        } catch (Exception e) {
            log.warn("设置操作名称异常", e);
        }
    }

    /**
     * 设置当前Span的标签，记录关键信息
     */
    public static void setTag(String key, String value) {
        try {
            ActiveSpan.tag(key, value);
        } catch (Exception e) {
            log.warn("设置标签异常", e);
        }
    }

    /**
     * 记录当前Span的信息，用于记录关键调试信息
     */
    public static void info(String info) {
        try {
            ActiveSpan.info(info);
        } catch (Exception e) {
            log.warn("记录info异常", e);
        }
    }

    /**
     * 记录当前Span的错误信息
     */
    public static void error(String error) {
        try {
            ActiveSpan.error(error);
        } catch (Exception e) {
            log.warn("记录error异常", e);
        }
    }
} 